package com.misty.chain_pattern.client;

import java.util.ArrayList;
import java.util.List;
import java.util.Random;

public class Client {
    /**
     * 在实际应用中，一般会有一个封装类对责任模式进行封装，也就是替代Client类，直接返回链中的第一个处理者，具体链的设置不需要高层次模块关系，
     * 这样，更简化了高层次模块的调用，减少模块间的耦合，提高系统的灵活性。
     *
     * @param args
     */
    public static void main(String[] args) {
        Random rand = new Random();
        List<IWomen> arrayList = new ArrayList();
        for (int i = 0; i < 5; i++) {
            IWomen women = new Women(rand.nextInt(4), "我要出去逛街");
            arrayList.add(women);
        }
        //定义三个请示对象
        Handler father = new FatherHandler();
        Handler husband = new HusbandHandler();
        Handler son = new SonHandler();
        //设置请示顺序
        father.setNextHandler(husband);
        husband.setNextHandler(son);
        for (IWomen women : arrayList) {
            father.handleMessage(women);
        }
    }
}
